/*
 * This file is part of Space Invaders: Rehash
 * Copyright (C)2007 Vicent Marti (tanoku@gmail.com)
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
 // lael you can like... modify the game itself here...
 // FIXME: maybe I should have spread this out evenly amongst individual headers,
 // each change here takes ages to compile

#ifndef __GAME_CONST_H__
#define __GAME_CONST_H__

#define ALIEN_W 40
#define ALIEN_H 40
#define PLAYER_W 50
#define PLAYER_H 8
#define MISSILE_W 8
#define MISSILE_H 8
#define BARRIER_W 64
#define BARRIER_H 24
#define BARRIER_ABS_H 128
#define BOSS_W 256
#define BOSS_H 256

#define PLAYER_BB_W 50
#define PLAYER_BB_H 36

#define MAX_BARRIERS 4
#define MAX_MISSILES 8
#define MISSILE_SHOOT_SPEED 1250
#define MISSILE_FAST_SPEED 550

#define GAME_PAUSE_TIME 250

#define ENEMIES_MAX_ROWS 8
#define ENEMIES_MAX_COLS 5

// ------------------------------------------
// ------ GAME RULES ------------------------
// ------------------------------------------
#define GR_PRIMESHOOTER                 (1<<0)
#define GR_COLORSHOOTER                 (1<<1)

#define GR_MISSILES_BOUNCE_ON_TOP       (1<<2)
#define GR_MISSILES_BOUNCE_ON_ENEMIES   (1<<3)

#define GR_PLACE_DEFENCES_2		(1<<4)
#define GR_PLACE_DEFENCES_4		(1<<5)
#define GR_STATIC_DEFENCES		(1<<6)

#define GR_LOW_ENEMY_COUNT		(1<<7)
#define GR_MED_ENEMY_COUNT		(1<<8)
#define GR_HIGH_ENEMY_COUNT		(1<<9)

#define GR_TOUGH_ENEMIES		(1<<10)
#define GR_FAST_ENEMIES			(1<<11)
#define GR_FAST_SHOOTING		(1<<12)
#define GR_ENEMIES_DONT_ATTACK		(1<<13)

#define GR_BOSSFIGHT_1			(1<<14)
#define GR_BOSSFIGHT_2			(1<<15)
#define GR_BOSSFIGHT_3			(1<<16)
#define GR_BOSSFIGHT_4			(1<<17)

#define GR_4_COLORS			(1<<18)
#define GR_6_COLORS			(1<<19)
#define GR_8_COLORS			(1<<20)

// 21

#define GR_PRIMES_MAX_20		(1<<22)
#define GR_PRIMES_MAX_100		(1<<23)
#define GR_PRIMES_MAX_500		(1<<24)
#define GR_PRIMES_MAX_1000		(1<<25)

#define GR_PORTAL                       (1<<27)
#define GR_INSTANT_MISSILES             (1<<28)
#define GR_PRIME_HINTS                  (1<<29)
#define GR_GODMODE			(1<<30)

// ------------------------------------------
// ------ KEYMAPS ---------------------------
// ------------------------------------------
#define KEYMAP_NORMAL 0
#define KEYMAP_SEQ 1

// ------------------------------------------
// ------ SPRITES ---------------------------
// ------------------------------------------
#define SPRITE_NONE 0
#define SPRITE_EXPLOSION 1
#define SPRITE_DUST 2
#define SPRITE_SMOKE 3
#define SPRITE_SMOKETRAIL 4
#define SPRITE_EXPLOSION_SMALL 5

// ------------------------------------------
// ------ COLORS ----------------------------
// ------------------------------------------
// FIXME: these ones were made thinking they were going to be used for
// bitwise operations, but it obviously isnt the case
#define COLOR_NONE (1<<0)
#define COLOR_RED (1<<1)
#define COLOR_BLUE (1<<2)
#define COLOR_GREEN (1<<3)
#define COLOR_YELLOW (1<<4)
#define COLOR_PURPLE (1<<5)
#define COLOR_BROWN (1<<6)
#define COLOR_ORANGE (1<<7)
#define COLOR_GREY (1<<8)

// ------------------------------------------
// ------ GAME STATUS -----------------------
// ------------------------------------------
#define STATUS_INTRO 0
#define STATUS_PLACING 1
#define STATUS_COUNTDOWN 2
#define STATUS_PLAYING 3
#define STATUS_PAUSE 4
#define STATUS_GAMEOVER 5
#define STATUS_WIN 6
#define STATUS_MAX 7

// ------------------------------------------
// ------ OPTIONS ---------------------------
// ------------------------------------------
#define OPTION_KEYMAP_COMPACT (1<<0)
#define OPTION_NOSPRITES (1<<1)
#define OPTION_GODMODE (1<<2)

#endif
